const express = require('express')
const bodyParser = require('body-parser')
//处理 querystring 格式的请求体
let urlParser = bodyParser.urlencoded({extended:false})
//处理 JSON 格式的请求体
let jsonParser = bodyParser.json()

const app = express()

// 全局中间件
// app.use(function(req,res,next){
//     console.log("定义一个全局中间件");
//     next();
// })

app.use(express.static('./public'))

app.get('/home', urlParser, (req,res)=> {
    console.log(req.query);
    res.send('hello express server')
})

app.get('/',(req,res)=> {
    res.send('我才是真正的首页');
})

app.post('/login',jsonParser, (req,res)=> {
    console.log(req.body.name);
    console.log(req.body.age);
    console.log(req.body.sex);
    res.send('登录成功')
})

app.all('/search', (req,res)=> {
    res.send('1 秒钟为您找到相关结果约 100,000,000 个')
})
// 定义一个中间件
const recordMiddleware = (request,response,next)=> {
    console.log("我是路由中间件");
    next()
}
app.get('/request', recordMiddleware, (req, res)=> {
    // console.log(req.method);
    // console.log(req.url);
    // console.log(req.httpVersion);
    // console.log(req.headers);

    // console.log(req.query); //请求参数获取
    // console.log(req.get('host'));// 获取指定的请求头

    res.send('请求报文的获取')
})

app.get('/:id.html', (req,res)=> {
    res.send('商品详情, 商品 id 为' + req.params.id)
})

app.get('/response',(req,res)=> {
    //1. express 中设置响应的方式兼容 HTTP 模块的方式
    // res.statusCode = 404;
    // res.statusMessage = 'xxx';
    // res.setHeader('abc','xyz');
    // res.write('响应体');
    // res.end('xxx')

    //2. express 的响应方法
    // res.status(500);
    // res.set('xxx','yyy');
    // res.send('中文响应不乱码');

    // res.status(500).set('xxx','yyy').send('你好朋友');

    // res.redirect('https://www.baidu.com');
    // res.download('./package-lock.json');//下载响应
    // res.json();//响应 JSON
    res.sendFile(__dirname + '/home.html');
})

app.all('*', (req,res)=> {
    res.send('<h1>404 Not Found</h1>')
})

app.listen(3000, ()=> {
    console.log('服务已经启动, 端口监听为 3000...');
})